{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[ 0.78788065 -1.41024972  2.70693274 -0.29360192 -0.53131859  2.46220532\n",
      "  0.80950015 -1.30104628  1.01967858  1.5880319  -0.2967759   0.88375118\n",
      " -1.21995075 -2.18766658  0.6488387   2.47365149  2.21807785  0.5604765\n",
      "  1.61499772 -1.55602478  1.11772805  2.6643443  -0.6139178   0.04673462\n",
      " -0.65931683 -6.44307252  0.14374199 -0.50380879  0.41617738  2.97736788\n",
      " -0.00801807 -4.44154465]\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "\n",
    "# set problem size\n",
    "N = 5\n",
    "#Tau = 1\n",
    "E = np.random.normal(0, scale=N/2, size=2**N)\n",
    "idx_min = np.argmin(E)\n",
    "\n",
    "print(E)\n",
    "\n",
    "# B(t): arbitary function\n",
    "def scheduleE(time):\n",
    "    return time/Tau\n",
    "\n",
    "# A(t): arbitary function\n",
    "def scheduleG(time):\n",
    "    return (Tau - time)/Tau\n",
    "\n",
    "# generate differential equation\n",
    "def generate_diffeq(idx, offdiag_indices, time, vec):\n",
    "    v = E[idx]*scheduleE(time)\n",
    "    g = -1*scheduleG(time)\n",
    "    return v*vec[idx] + g*np.sum(vec[offdiag_indices])\n",
    "\n",
    "diffeq_array = [lambda vec, t, _i=i, _ij=np.array([i ^ (1 << n) for n in range(N)]):\n",
    "               generate_diffeq(_i, _ij, t, vec) for i in range(2**N)]\n",
    "\n",
    "def simdiffeq_rhs(t, vec):\n",
    "    return np.array([-1j*f(vec, t) for f in diffeq_array], dtype=np.complex_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/usr/local/lib/python3.8/site-packages/scipy/integrate/_ode.py:1011: UserWarning: vode: Excess work done on this call. (Perhaps wrong MF.)\n",
      "  warnings.warn('{:s}: {:s}'.format(self.__class__.__name__,\n"
     ]
    }
   ],
   "source": [
    "from scipy.integrate import complex_ode\n",
    "\n",
    "vec0 = np.array([2**(-N/2)] * 2**N, dtype=np.complex_)\n",
    "result_tau = []\n",
    "Taus = [1 / 4, 1 / 2, 1, 2, 3, 4, 6, 8, 12, 16, 24, 32, 48, 64, 96, 128, 192, 256, 384, 512, 768, 1024, 1536, 2048, 3072, 4096]\n",
    "for Tau in Taus:\n",
    "    r = complex_ode(simdiffeq_rhs)\n",
    "    r.set_initial_value(vec0)\n",
    "\n",
    "    steps = 100\n",
    "    i = 0\n",
    "    t = 0\n",
    "    while r.successful() and i <= steps:\n",
    "        v = r.integrate(t) if t != 0 else vec0\n",
    "    \n",
    "        t += Tau/steps\n",
    "        i += 1\n",
    "    \n",
    "    #print(Tau, abs(v[idx_min])**2)\n",
    "    result_tau.append(abs(v[idx_min])**2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "Taus_str = [str(Tau) for Tau in Taus]\n",
    "\n",
    "fig = plt.figure()\n",
    "ax = fig.add_subplot(1, 1, 1)\n",
    "\n",
    "ax.scatter(Taus, result_tau)\n",
    "ax.set_title('Correlation of Tau and Probability')\n",
    "ax.set_xlabel('Tau')\n",
    "ax.set_ylabel('Probability')\n",
    "ax.set_xscale('log', base=2)\n",
    "ax.grid()\n",
    "\n",
    "fig.savefig('CorrelationOfTauAndProbability.png')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
